class: center, middle, inverse, title-slide # Procesando datos con el paquete tidyverse ## Ciencias Sociales Computacionales y Humanidades Digitales --- ```r hook_source <- knitr::knit_hooks$get('source') knitr::knit_hooks$set(source = function(x, options) { x <- stringr::str_replace(x, "^[[:blank:]]?([^*].+?)[[:blank:]]*#<<[[:blank:]]*$", "*\\1") hook_source(x, options) }) ``` <style type="text/css"> .remark-slide-content { font-size: 25px; padding: 1em 1em 1em 1em; } <style type="text/css"> .remark-code{ line-height: 1.5; font-size: 80% } @media print { .has-continuation { display: block; } } </style> </style> --- class: inverse, middle, center # ¿Qué es [Tidyverse](https://www.tidyverse.org/)? <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- # Tidyverse .pull-left[ #### `Tidyverse` es una colección de paquetes de R, pensados para denominada "ciencia de datos". #### Comparten la misma filosofía de uso, por lo que trabajan en armonía entre unos y otros. ] .pull-right[ <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/tidyverse.png" width="781" style="display: block; margin: auto;" /> ] --- class: inverse, middle, center # ¿Por qué tidyverse? <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- # __¿Por qué tidyverse?__ - ### Orientado a ser leído y escrito por y para seres humanos -- - ### Funciones no pensadas para una tarea específica sino para un proceso de trabajo <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/circuito del dato.png" width="50%" style="display: block; margin: auto;" /> -- - ### Su comunidad, basada en los principios del código abierto y trabajo colaborativo --- # __Instalación y uso__ * Sólo una vez (por computadora): ```r install.packages("tidyverse") ``` -- * En cada inicio de sesión de R o Rstudio: ```r library(tidyverse) ``` -- _No es necesario esto:_ ```r install.packages("dplyr") install.packages("tidyr") install.packages("ggplot2") ``` --- # Hoja de ruta ### Presentación de los paquetes `dplyr` y `tidyr` .pull-left[ ## ✔️ dplyr ☑️️ `select()` ☑️️ `filter()` ☑️️ `mutate()` ☑️️ `rename()` ☑️️ `arragne()` ☑️️ `summarise()` ☑️️ `group_by()` ] .pull-right[ ## ✔️ tidyr ☑️ `pivot_longer()` ☑️ `pivot_wider()` <br> ## ✔️ magrittr ☑️ `%>%` ] *** ```r base_covid <- readRDS("Fuentes/base_covid_sample.RDS") ``` --- class: middle, center, inverse EL PIPE <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/pipe.png" width="20%" style="display: block; margin: auto;" /> _<p style="color:grey;" align:"center">Una forma de escribir</p>_ --- # magrittr .pull-left[ ### Sin EL PIPE: ```r table(`base_covid$sexo`) ``` -- ``` F M NR 93963 86742 1975 ``` ] -- .pull-right[ ### Con EL PIPE ```r base_covid$sexo `%>%` table() ``` -- ``` . F M NR 93963 86742 1975 ``` ] --- # magrittr - una forma de escribir ### Caso: Deseo obtener la distribución relativa de casos por sexo: #### Funciones: `table()` - `prop.table()` - `round()` -- <iframe src="https://pablot.shinyapps.io/ejercicio_xaringan/?showcase=0" width="100%" height="400px"></iframe> --- class: middle, center, inverse <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/logo dplyr.png" width="30%" style="display: block; margin: auto;" /> --- # dplyr ## Funciones del paquete dplyr: <br> | __Función__ | __Acción__ | | :--- | ---: | | `select()` | *selecciona o descarta variables*| | `filter()` | *selecciona filas*| | `mutate()` | *crea / edita variables*| | `rename()` | *renombra variables*| | `group_by()` | *segmenta en funcion de una variable*| | `summarize()` | *genera una tabla de resúmen*| --- class: inverse, middle, center # __select()__ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Elije o descarta columnas de una base de datos</p>_ --- # select() ### La función tiene el siguiente esquema: ```r base_de_datos %>% * select(id, nombre) ``` <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/select_presentacion.png" width="65%" style="display: block; margin: auto;" /> --- # select() ### Supongamos que debo realizar un pequeño informe para caracterizar los CASOS COVID-19 registrados en el país, según la __edad__ y __sexo__. -- Para ello, en base a la [metadata](http://datos.salud.gob.ar/dataset/covid-19-casos-registrados-en-la-republica-argentina/archivo/fd657d02-a33a-498b-a91b-2ef1a68b8d16), identifico los nombres de las variables en cuestión: __sexo__ / __edad__ -- #### Luego, procedemos a cargar las librerías que voy a utilizar: ```r library(tidyverse) ``` -- #### Finalmente, creamos un objeto en donde importo la base de datos con la función `readRDS()`: ```r base_covid <- readRDS("Fuentes/base_covid_sample.RDS") ``` --- # select() - nombre de las variables ### selecciono las columnas que deseo de la base de datos: ```r base_covid_seleccion <- `base_covid` %>% select(sexo, edad) ``` -- ### Chequeo la operación: ```r colnames(base_covid_seleccion) ``` ``` [1] "sexo" "edad" ``` --- # select() - por posición de la columna ### Supongamos que quiero las columnas __"id_evento_caso"__, __"edad"__ y __"edad_años_meses"__ -- 1) Chequeo la posición de las columnas que deseo: ```r colnames(base_covid) ``` <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/selec_posicion.png" width="60%" style="display: block; margin: auto;" /> --- # select() - por posición de la columna 2) Aplico la función `select()` en base a la posición de las columnas: ```r base_covid_seleccion <- base_covid %>% select(1, 3, 4) ``` -- ### chequeo seleccion: ```r colnames(base_covid_seleccion) ``` ``` [1] "id_evento_caso" "edad" "edad_años_meses" ``` --- count: false # Otra forma de selecionar .panel1-select_1-auto[ ```r *base_covid ``` ] .panel2-select_1-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # Otra forma de selecionar .panel1-select_1-auto[ ```r base_covid %>% * select(2:4) ``` ] .panel2-select_1-auto[ ``` # A tibble: 182,680 x 3 sexo edad edad_años_meses <chr> <dbl> <chr> 1 NR 23 Años 2 F 53 Años 3 M 44 Años 4 F 29 Años 5 M 54 Años 6 M 2 Años 7 M 41 Años 8 M 53 Años 9 F 70 Años 10 M 30 Años # ... with 182,670 more rows ``` ] <style> .panel1-select_1-auto { color: black; width: 45.7333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-select_1-auto { color: black; width: 52.2666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-select_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center ## Una más! --- count: false # Otra forma de selecionar .panel1-select_2-auto[ ```r *base_covid ``` ] .panel2-select_2-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # Otra forma de selecionar .panel1-select_2-auto[ ```r base_covid %>% * select(edad:residencia_departamento_id) ``` ] .panel2-select_2-auto[ ``` # A tibble: 182,680 x 22 edad edad_años_meses residencia_pais_~ residencia_provin~ residencia_depart~ <dbl> <chr> <chr> <chr> <chr> 1 23 Años Líbano SIN ESPECIFICAR SIN ESPECIFICAR 2 53 Años Argentina CABA SIN ESPECIFICAR 3 44 Años Argentina CABA SIN ESPECIFICAR 4 29 Años Argentina CABA SIN ESPECIFICAR 5 54 Años Argentina CABA SIN ESPECIFICAR 6 2 Años Argentina CABA SIN ESPECIFICAR 7 41 Años Argentina CABA SIN ESPECIFICAR 8 53 Años Argentina CABA SIN ESPECIFICAR 9 70 Años Argentina CABA SIN ESPECIFICAR 10 30 Años Argentina CABA SIN ESPECIFICAR # ... with 182,670 more rows, and 17 more variables: # carga_provincia_nombre <chr>, fecha_inicio_sintomas <date>, # fecha_apertura <date>, sepi_apertura <dbl>, fecha_internacion <date>, # cuidado_intensivo <chr>, fecha_cui_intensivo <lgl>, fallecido <chr>, # fecha_fallecimiento <date>, asistencia_respiratoria_mecanica <chr>, # carga_provincia_id <chr>, origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr> ``` ] <style> .panel1-select_2-auto { color: black; width: 45.7333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-select_2-auto { color: black; width: 52.2666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-select_2-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center ## Una más! --- count: false # Otra forma de selecionar .panel1-select_3-auto[ ```r *base_covid ``` ] .panel2-select_3-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # Otra forma de selecionar .panel1-select_3-auto[ ```r base_covid %>% * select(starts_with("residencia")) ``` ] .panel2-select_3-auto[ ``` # A tibble: 182,680 x 5 residencia_pais_n~ residencia_provinc~ residencia_departam~ residencia_provi~ <chr> <chr> <chr> <chr> 1 Líbano SIN ESPECIFICAR SIN ESPECIFICAR 99 2 Argentina CABA SIN ESPECIFICAR 02 3 Argentina CABA SIN ESPECIFICAR 02 4 Argentina CABA SIN ESPECIFICAR 02 5 Argentina CABA SIN ESPECIFICAR 02 6 Argentina CABA SIN ESPECIFICAR 02 7 Argentina CABA SIN ESPECIFICAR 02 8 Argentina CABA SIN ESPECIFICAR 02 9 Argentina CABA SIN ESPECIFICAR 02 10 Argentina CABA SIN ESPECIFICAR 02 # ... with 182,670 more rows, and 1 more variable: # residencia_departamento_id <chr> ``` ] <style> .panel1-select_3-auto { color: black; width: 45.7333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-select_3-auto { color: black; width: 52.2666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-select_3-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center ## Una más! --- count: false # Otra forma de selecionar .panel1-select_4-auto[ ```r *base_covid ``` ] .panel2-select_4-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # Otra forma de selecionar .panel1-select_4-auto[ ```r base_covid %>% * select(ends_with("id")) ``` ] .panel2-select_4-auto[ ``` # A tibble: 182,680 x 3 carga_provincia_id residencia_provincia_id residencia_departamento_id <chr> <chr> <chr> 1 06 99 0 2 02 02 0 3 06 02 0 4 02 02 0 5 02 02 0 6 06 02 0 7 02 02 0 8 02 02 0 9 02 02 0 10 06 02 0 # ... with 182,670 more rows ``` ] <style> .panel1-select_4-auto { color: black; width: 45.7333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-select_4-auto { color: black; width: 52.2666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-select_4-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center ## Una más! --- count: false # Otra forma de selecionar .panel1-select_5-auto[ ```r *base_covid ``` ] .panel2-select_5-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # Otra forma de selecionar .panel1-select_5-auto[ ```r base_covid %>% * select(contains("provincia")) ``` ] .panel2-select_5-auto[ ``` # A tibble: 182,680 x 4 residencia_provincia~ carga_provincia_no~ carga_provincia~ residencia_provin~ <chr> <chr> <chr> <chr> 1 SIN ESPECIFICAR Buenos Aires 06 99 2 CABA CABA 02 02 3 CABA Buenos Aires 06 02 4 CABA CABA 02 02 5 CABA CABA 02 02 6 CABA Buenos Aires 06 02 7 CABA CABA 02 02 8 CABA CABA 02 02 9 CABA CABA 02 02 10 CABA Buenos Aires 06 02 # ... with 182,670 more rows ``` ] <style> .panel1-select_5-auto { color: black; width: 45.7333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-select_5-auto { color: black; width: 52.2666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-select_5-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center # _PRÁCTICA_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- class: inverse, middle ## Práctica 1) Crear un objeto en donde importamos la base de datos COVID (recordar tener en cuenta la extensión del archivo) 2) Crear otro objeto en donde selecciono 3 columnas de interés según sus nombres 3) Crear otro objeto en donde selecciono 3 columnas de interés según su posición --- class: inverse, middle, center # filter() <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Define los casos (filas) en base a una condición</p>_ --- # filter() ### La función tiene el siguiente esquema: ```r base_de_datos %>% filter(condicion) ``` <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/filter_presentacion.png" width="65%" style="display: block; margin: auto;" /> --- # filter() - ### Por ejemplo: ```r base %>% `filter(Edad > 70)` ``` <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/filter_presentacion.png" width="65%" style="display: block; margin: auto;" /> --- # filter() #### Caso: Quiero quedarme unicamente con aquella población que tuvieron __asistencia respiratoria mecánica__. Según la [metadata](http://datos.salud.gob.ar/dataset/covid-19-casos-registrados-en-la-republica-argentina/archivo/fd657d02-a33a-498b-a91b-2ef1a68b8d16), la variable que necesito para filtrar se llama `asistencia_respiratoria_mecanica`, cuyas categorías son `SI / NO`: --- count: false # filter() .panel1-filter-auto[ ```r *base_covid ``` ] .panel2-filter-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # filter() .panel1-filter-auto[ ```r base_covid %>% * select(id_evento_caso, * asistencia_respiratoria_mecanica) ``` ] .panel2-filter-auto[ ``` # A tibble: 182,680 x 2 id_evento_caso asistencia_respiratoria_mecanica <dbl> <chr> 1 748361 NO 2 748780 NO 3 751658 NO 4 755897 NO 5 756503 NO 6 758578 NO 7 762704 NO 8 763097 NO 9 764087 NO 10 765127 NO # ... with 182,670 more rows ``` ] --- count: false # filter() .panel1-filter-auto[ ```r base_covid %>% select(id_evento_caso, asistencia_respiratoria_mecanica) %>% * filter(asistencia_respiratoria_mecanica == "SI") ``` ] .panel2-filter-auto[ ``` # A tibble: 364 x 2 id_evento_caso asistencia_respiratoria_mecanica <dbl> <chr> 1 773376 SI 2 816251 SI 3 836895 SI 4 852977 SI 5 870899 SI 6 901291 SI 7 904720 SI 8 937062 SI 9 998935 SI 10 1125035 SI # ... with 354 more rows ``` ] <style> .panel1-filter-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-filter-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-filter-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- # filter() #### Operadores para filtrar: <br> .pull-left[ |Condición |Acción | | :--- | :--- | | | | | `==` | *igual* | | `%in%` | *incluye* | | `!=` | *distinto* | | `>` | *mayor que* | | `<` | *menor que* | | `>=` | *mayor o igual que*| | `<=` | *menor o igual que*| ] .pull-right[ | Operador | Descripción | | :--- | :--- | | | | | `&` | *y* - Cuando se cumplen ambas condiciones | | | | *o* - Cuando se cumple una u otra condición | ] --- # filter() ### Caso: Quiero quedarme con la población de la _Ciudad Autónoma de buenos Aires_ __o__ de _la provincia Buenos aires_ __y__ que haya recibido asistencia respiratoria mecánica: <br> - Provincias CABA o Buenos Aires (`residencia_provincia_nombre %in% c("CABA", "Buenos Aires")`); - Asistencia respiratorio mecanica (`asistencia_respiratoria_mecanica == "SI"`); --- count: false #filter .panel1-filter_1-auto[ ```r *base_covid ``` ] .panel2-filter_1-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false #filter .panel1-filter_1-auto[ ```r base_covid %>% * select(id_evento_caso, * residencia_provincia_nombre, * asistencia_respiratoria_mecanica) ``` ] .panel2-filter_1-auto[ ``` # A tibble: 182,680 x 3 id_evento_caso residencia_provincia_nombre asistencia_respiratoria_mecanica <dbl> <chr> <chr> 1 748361 SIN ESPECIFICAR NO 2 748780 CABA NO 3 751658 CABA NO 4 755897 CABA NO 5 756503 CABA NO 6 758578 CABA NO 7 762704 CABA NO 8 763097 CABA NO 9 764087 CABA NO 10 765127 CABA NO # ... with 182,670 more rows ``` ] --- count: false #filter .panel1-filter_1-auto[ ```r base_covid %>% select(id_evento_caso, residencia_provincia_nombre, asistencia_respiratoria_mecanica) %>% * filter(residencia_provincia_nombre %in% c("CABA","Buenos Aires")) ``` ] .panel2-filter_1-auto[ ``` # A tibble: 99,818 x 3 id_evento_caso residencia_provincia_nombre asistencia_respiratoria_mecanica <dbl> <chr> <chr> 1 748780 CABA NO 2 751658 CABA NO 3 755897 CABA NO 4 756503 CABA NO 5 758578 CABA NO 6 762704 CABA NO 7 763097 CABA NO 8 764087 CABA NO 9 765127 CABA NO 10 766173 CABA NO # ... with 99,808 more rows ``` ] --- count: false #filter .panel1-filter_1-auto[ ```r base_covid %>% select(id_evento_caso, residencia_provincia_nombre, asistencia_respiratoria_mecanica) %>% filter(residencia_provincia_nombre %in% c("CABA","Buenos Aires")) %>% * filter(asistencia_respiratoria_mecanica == "SI") ``` ] .panel2-filter_1-auto[ ``` # A tibble: 200 x 3 id_evento_caso residencia_provincia_nombre asistencia_respiratoria_mecanica <dbl> <chr> <chr> 1 773376 CABA SI 2 816251 CABA SI 3 836895 CABA SI 4 852977 CABA SI 5 870899 Buenos Aires SI 6 901291 CABA SI 7 904720 CABA SI 8 937062 CABA SI 9 998935 Buenos Aires SI 10 1125035 CABA SI # ... with 190 more rows ``` ] <style> .panel1-filter_1-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-filter_1-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-filter_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center # _PRÁCTICA_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- class: inverse, middle # Práctica - Crear un objeto que contenga las variables __id_evento_viaje__, __residencia_provincia_nombre__ y __asistencia_respiratoria_mecanica__ y cuya población sea sólo aquella de las __provincias de la Patagonia__ que __NO__ recibió ayuda respiratoria mecánica. --- class: inverse, middle, center # _mutate()_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Creoa / edita variables (columnas)</p>_ --- # mutate() - ### En R base: ```r base_de_dato$var_nueva <- base_de_datos$var_1 + base_de_datos$var_2 ``` <br> - ### En `tidyverse`: ```r base_de_datos %>% mutate(var_nueva = var_1 + var_2) ``` --- # mutate() <br><br> ### Caso: Supongamos que quiero crear la variable de año y mes de fallecimiento (variable __fecha_fallecimiento__): <br><br> --- count: false # mutate() .panel1-mutate_1-auto[ ```r *base_covid ``` ] .panel2-mutate_1-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # mutate() .panel1-mutate_1-auto[ ```r base_covid %>% * select(fallecido, fecha_fallecimiento) ``` ] .panel2-mutate_1-auto[ ``` # A tibble: 182,680 x 2 fallecido fecha_fallecimiento <chr> <date> 1 NO NA 2 NO NA 3 NO NA 4 NO NA 5 NO NA 6 NO NA 7 NO NA 8 NO NA 9 NO NA 10 NO NA # ... with 182,670 more rows ``` ] --- count: false # mutate() .panel1-mutate_1-auto[ ```r base_covid %>% select(fallecido, fecha_fallecimiento) %>% * filter(fallecido == "SI") ``` ] .panel2-mutate_1-auto[ ``` # A tibble: 1,402 x 2 fallecido fecha_fallecimiento <chr> <date> 1 SI 2020-03-27 2 SI 2020-04-10 3 SI 2020-04-19 4 SI 2020-05-01 5 SI 2020-07-25 6 SI 2020-05-02 7 SI 2020-05-01 8 SI 2020-05-29 9 SI 2020-05-05 10 SI 2020-05-30 # ... with 1,392 more rows ``` ] --- count: false # mutate() .panel1-mutate_1-auto[ ```r base_covid %>% select(fallecido, fecha_fallecimiento) %>% filter(fallecido == "SI") %>% * mutate(anio = substr(x = fecha_fallecimiento, * start = 1, * stop = 4)) ``` ] .panel2-mutate_1-auto[ ``` # A tibble: 1,402 x 3 fallecido fecha_fallecimiento anio <chr> <date> <chr> 1 SI 2020-03-27 2020 2 SI 2020-04-10 2020 3 SI 2020-04-19 2020 4 SI 2020-05-01 2020 5 SI 2020-07-25 2020 6 SI 2020-05-02 2020 7 SI 2020-05-01 2020 8 SI 2020-05-29 2020 9 SI 2020-05-05 2020 10 SI 2020-05-30 2020 # ... with 1,392 more rows ``` ] --- count: false # mutate() .panel1-mutate_1-auto[ ```r base_covid %>% select(fallecido, fecha_fallecimiento) %>% filter(fallecido == "SI") %>% mutate(anio = substr(x = fecha_fallecimiento, start = 1, stop = 4)) %>% * mutate(mes = substr(x = fecha_fallecimiento, * start = 6, * stop = 7)) ``` ] .panel2-mutate_1-auto[ ``` # A tibble: 1,402 x 4 fallecido fecha_fallecimiento anio mes <chr> <date> <chr> <chr> 1 SI 2020-03-27 2020 03 2 SI 2020-04-10 2020 04 3 SI 2020-04-19 2020 04 4 SI 2020-05-01 2020 05 5 SI 2020-07-25 2020 07 6 SI 2020-05-02 2020 05 7 SI 2020-05-01 2020 05 8 SI 2020-05-29 2020 05 9 SI 2020-05-05 2020 05 10 SI 2020-05-30 2020 05 # ... with 1,392 more rows ``` ] <style> .panel1-mutate_1-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-mutate_1-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-mutate_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- # mutate() - case_when() ### Función complementaria: `case_when()`, mayormente utilizada para recodificación de variables <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/mutate_case.png" width="100%" style="display: block; margin: auto;" /> --- count: false # Recodificando con mutate() y case_when() .panel1-mutate_2-auto[ ```r *base_covid ``` ] .panel2-mutate_2-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # Recodificando con mutate() y case_when() .panel1-mutate_2-auto[ ```r base_covid %>% * select(id_evento_caso, fallecido) ``` ] .panel2-mutate_2-auto[ ``` # A tibble: 182,680 x 2 id_evento_caso fallecido <dbl> <chr> 1 748361 NO 2 748780 NO 3 751658 NO 4 755897 NO 5 756503 NO 6 758578 NO 7 762704 NO 8 763097 NO 9 764087 NO 10 765127 NO # ... with 182,670 more rows ``` ] --- count: false # Recodificando con mutate() y case_when() .panel1-mutate_2-auto[ ```r base_covid %>% select(id_evento_caso, fallecido) %>% * mutate(fallecidos_rec = case_when(fallecido == "SI" ~ 1, * fallecido == "NO" ~ 2)) ``` ] .panel2-mutate_2-auto[ ``` # A tibble: 182,680 x 3 id_evento_caso fallecido fallecidos_rec <dbl> <chr> <dbl> 1 748361 NO 2 2 748780 NO 2 3 751658 NO 2 4 755897 NO 2 5 756503 NO 2 6 758578 NO 2 7 762704 NO 2 8 763097 NO 2 9 764087 NO 2 10 765127 NO 2 # ... with 182,670 more rows ``` ] <style> .panel1-mutate_2-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-mutate_2-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-mutate_2-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- count: false # Recodificando con mutate() y case_when() .panel1-mutate_3-auto[ ```r *base_covid ``` ] .panel2-mutate_3-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # Recodificando con mutate() y case_when() .panel1-mutate_3-auto[ ```r base_covid %>% * select(id_evento_caso,fallecido, edad) ``` ] .panel2-mutate_3-auto[ ``` # A tibble: 182,680 x 3 id_evento_caso fallecido edad <dbl> <chr> <dbl> 1 748361 NO 23 2 748780 NO 53 3 751658 NO 44 4 755897 NO 29 5 756503 NO 54 6 758578 NO 2 7 762704 NO 41 8 763097 NO 53 9 764087 NO 70 10 765127 NO 30 # ... with 182,670 more rows ``` ] --- count: false # Recodificando con mutate() y case_when() .panel1-mutate_3-auto[ ```r base_covid %>% select(id_evento_caso,fallecido, edad) %>% * mutate(edad_rango = case_when(edad %in% c(0:18) ~ "0 a 18", * edad %in% c(19:29) ~ "19 a 29", * edad %in% c(30:39) ~ "30 a 39", * edad %in% c(40:49) ~ "40 a 49", * edad %in% c(50:59) ~ "50 a 59", * edad >= 60 ~ "60 o más")) ``` ] .panel2-mutate_3-auto[ ``` # A tibble: 182,680 x 4 id_evento_caso fallecido edad edad_rango <dbl> <chr> <dbl> <chr> 1 748361 NO 23 19 a 29 2 748780 NO 53 50 a 59 3 751658 NO 44 40 a 49 4 755897 NO 29 19 a 29 5 756503 NO 54 50 a 59 6 758578 NO 2 0 a 18 7 762704 NO 41 40 a 49 8 763097 NO 53 50 a 59 9 764087 NO 70 60 o más 10 765127 NO 30 30 a 39 # ... with 182,670 more rows ``` ] <style> .panel1-mutate_3-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-mutate_3-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-mutate_3-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center # _PRÁCTICA_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> --- class: inverse # Práctica 1) Recodificar la variable __TamañoGrupoViajero__, para que los valores numéricos pasen a ser de texto, con las siguientes categorías: <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/practica_mutate.png" width="619" style="display: block; margin: auto;" /> --- class: inverse # Práctica 2) En base a la variable contínua de **edad**, crear una nueva variable de tipo categórica con los siguientes rangos: <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/practica_mutate_2.png" width="985" style="display: block; margin: auto;" /> --- class: inverse, middle, center # _summarise()_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Resume la información en una nueva tabla</p>_ --- # summarise() <br><br> <br><br> ```r base_de_datos %>% summarise(var1_resumen = sum(var1), var2_media = mean(var2), var2_desvio = sd(var2), var2_cv = var2_desvio / var2_media * 100) ``` --- count: false # _summarise()_ .panel1-summarise_1-auto[ ```r *base_covid ``` ] .panel2-summarise_1-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # _summarise()_ .panel1-summarise_1-auto[ ```r base_covid %>% * select(id_evento_caso, edad) ``` ] .panel2-summarise_1-auto[ ``` # A tibble: 182,680 x 2 id_evento_caso edad <dbl> <dbl> 1 748361 23 2 748780 53 3 751658 44 4 755897 29 5 756503 54 6 758578 2 7 762704 41 8 763097 53 9 764087 70 10 765127 30 # ... with 182,670 more rows ``` ] --- count: false # _summarise()_ .panel1-summarise_1-auto[ ```r base_covid %>% select(id_evento_caso, edad) %>% * summarise(min = min(edad, na.rm = TRUE), * max = max(edad, na.rm = TRUE), * media = mean(edad, na.rm = TRUE), * mediana = median(edad, na.rm = TRUE), * desvio = sd(edad, na.rm = TRUE), * cv = desvio / media * 100) ``` ] .panel2-summarise_1-auto[ ``` # A tibble: 1 x 6 min max media mediana desvio cv <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 -12 121 39.1 37 18.1 46.4 ``` ] <style> .panel1-summarise_1-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-summarise_1-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-summarise_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center # _group_by()_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Aplica una operación sobre la población de forma segmentada</p>_ --- # group_by() <br><br> <br><br> ```r base_de_datos %>% group_by(variable_de_corte) #<< ``` --- count: false # _group_by()_ .panel1-group_by_1-auto[ ```r *base_covid ``` ] .panel2-group_by_1-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # _group_by()_ .panel1-group_by_1-auto[ ```r base_covid %>% * group_by(residencia_provincia_nombre) ``` ] .panel2-group_by_1-auto[ ``` # A tibble: 182,680 x 25 # Groups: residencia_provincia_nombre [25] id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # _group_by()_ .panel1-group_by_1-auto[ ```r base_covid %>% group_by(residencia_provincia_nombre) %>% * summarise(min = min(edad, na.rm = TRUE), * max = max(edad, na.rm = TRUE), * media = mean(edad, na.rm = TRUE), * mediana = median(edad, na.rm = TRUE), * desvio = sd(edad, na.rm = TRUE), * cv = desvio / media * 100) ``` ] .panel2-group_by_1-auto[ ``` # A tibble: 25 x 7 residencia_provincia_nombre min max media mediana desvio cv <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 Buenos Aires 0 121 38.6 37 18.2 47.2 2 CABA -12 121 40.3 38 18.8 46.5 3 Catamarca 1 94 37.3 36 17.4 46.7 4 Chaco 1 97 37.7 35 17.3 46.0 5 Chubut 1 97 38.8 36 16.2 41.7 6 Córdoba 1 121 39.0 37 18.8 48.1 7 Corrientes 1 95 37.7 35 15.4 40.8 8 Entre Ríos 1 101 39.0 37 18.5 47.3 9 Formosa 1 89 37.2 36 17.1 46.0 10 Jujuy 1 121 40.7 39 18.1 44.4 # ... with 15 more rows ``` ] <style> .panel1-group_by_1-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-group_by_1-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-group_by_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- # summarise() ### **Caso:** Queremos conocer la estructura etárea de las personas residentes en Capital Federal y la Provincia de Buenos Aires, comparando entre aquellas que fallecieron y las que no, y por sexo. --- count: false # _group_by()_ .panel1-group_by_2-auto[ ```r *base_covid ``` ] .panel2-group_by_2-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # _group_by()_ .panel1-group_by_2-auto[ ```r base_covid %>% * select(edad, * sexo, * fallecido, * res_provincia = residencia_provincia_nombre) ``` ] .panel2-group_by_2-auto[ ``` # A tibble: 182,680 x 4 edad sexo fallecido res_provincia <dbl> <chr> <chr> <chr> 1 23 NR NO SIN ESPECIFICAR 2 53 F NO CABA 3 44 M NO CABA 4 29 F NO CABA 5 54 M NO CABA 6 2 M NO CABA 7 41 M NO CABA 8 53 M NO CABA 9 70 F NO CABA 10 30 M NO CABA # ... with 182,670 more rows ``` ] --- count: false # _group_by()_ .panel1-group_by_2-auto[ ```r base_covid %>% select(edad, sexo, fallecido, res_provincia = residencia_provincia_nombre) %>% * mutate(edad_rango = case_when(edad %in% c(0:18) ~ "0 a 18", * edad %in% c(19:29) ~ "19 a 29", * edad %in% c(30:39) ~ "30 a 39", * edad %in% c(40:49) ~ "40 a 49", * edad %in% c(50:59) ~ "50 a 59", * edad >= 60 ~ "60 o más"), * sexo = case_when(sexo == "F" ~ "Femenino", * sexo == "M" ~ "Masculino", * sexo == "NR" ~ "No responde")) ``` ] .panel2-group_by_2-auto[ ``` # A tibble: 182,680 x 5 edad sexo fallecido res_provincia edad_rango <dbl> <chr> <chr> <chr> <chr> 1 23 No responde NO SIN ESPECIFICAR 19 a 29 2 53 Femenino NO CABA 50 a 59 3 44 Masculino NO CABA 40 a 49 4 29 Femenino NO CABA 19 a 29 5 54 Masculino NO CABA 50 a 59 6 2 Masculino NO CABA 0 a 18 7 41 Masculino NO CABA 40 a 49 8 53 Masculino NO CABA 50 a 59 9 70 Femenino NO CABA 60 o más 10 30 Masculino NO CABA 30 a 39 # ... with 182,670 more rows ``` ] --- count: false # _group_by()_ .panel1-group_by_2-auto[ ```r base_covid %>% select(edad, sexo, fallecido, res_provincia = residencia_provincia_nombre) %>% mutate(edad_rango = case_when(edad %in% c(0:18) ~ "0 a 18", edad %in% c(19:29) ~ "19 a 29", edad %in% c(30:39) ~ "30 a 39", edad %in% c(40:49) ~ "40 a 49", edad %in% c(50:59) ~ "50 a 59", edad >= 60 ~ "60 o más"), sexo = case_when(sexo == "F" ~ "Femenino", sexo == "M" ~ "Masculino", sexo == "NR" ~ "No responde")) %>% * filter(res_provincia %in% c("Buenos Aires", * "CABA")) ``` ] .panel2-group_by_2-auto[ ``` # A tibble: 99,818 x 5 edad sexo fallecido res_provincia edad_rango <dbl> <chr> <chr> <chr> <chr> 1 53 Femenino NO CABA 50 a 59 2 44 Masculino NO CABA 40 a 49 3 29 Femenino NO CABA 19 a 29 4 54 Masculino NO CABA 50 a 59 5 2 Masculino NO CABA 0 a 18 6 41 Masculino NO CABA 40 a 49 7 53 Masculino NO CABA 50 a 59 8 70 Femenino NO CABA 60 o más 9 30 Masculino NO CABA 30 a 39 10 28 Masculino NO CABA 19 a 29 # ... with 99,808 more rows ``` ] --- count: false # _group_by()_ .panel1-group_by_2-auto[ ```r base_covid %>% select(edad, sexo, fallecido, res_provincia = residencia_provincia_nombre) %>% mutate(edad_rango = case_when(edad %in% c(0:18) ~ "0 a 18", edad %in% c(19:29) ~ "19 a 29", edad %in% c(30:39) ~ "30 a 39", edad %in% c(40:49) ~ "40 a 49", edad %in% c(50:59) ~ "50 a 59", edad >= 60 ~ "60 o más"), sexo = case_when(sexo == "F" ~ "Femenino", sexo == "M" ~ "Masculino", sexo == "NR" ~ "No responde")) %>% filter(res_provincia %in% c("Buenos Aires", "CABA")) %>% * group_by(sexo, edad_rango) ``` ] .panel2-group_by_2-auto[ ``` # A tibble: 99,818 x 5 # Groups: sexo, edad_rango [21] edad sexo fallecido res_provincia edad_rango <dbl> <chr> <chr> <chr> <chr> 1 53 Femenino NO CABA 50 a 59 2 44 Masculino NO CABA 40 a 49 3 29 Femenino NO CABA 19 a 29 4 54 Masculino NO CABA 50 a 59 5 2 Masculino NO CABA 0 a 18 6 41 Masculino NO CABA 40 a 49 7 53 Masculino NO CABA 50 a 59 8 70 Femenino NO CABA 60 o más 9 30 Masculino NO CABA 30 a 39 10 28 Masculino NO CABA 19 a 29 # ... with 99,808 more rows ``` ] --- count: false # _group_by()_ .panel1-group_by_2-auto[ ```r base_covid %>% select(edad, sexo, fallecido, res_provincia = residencia_provincia_nombre) %>% mutate(edad_rango = case_when(edad %in% c(0:18) ~ "0 a 18", edad %in% c(19:29) ~ "19 a 29", edad %in% c(30:39) ~ "30 a 39", edad %in% c(40:49) ~ "40 a 49", edad %in% c(50:59) ~ "50 a 59", edad >= 60 ~ "60 o más"), sexo = case_when(sexo == "F" ~ "Femenino", sexo == "M" ~ "Masculino", sexo == "NR" ~ "No responde")) %>% filter(res_provincia %in% c("Buenos Aires", "CABA")) %>% group_by(sexo, edad_rango) %>% * summarise(min = min(edad, na.rm = TRUE), * max = max(edad, na.rm = TRUE), * media = mean(edad, na.rm = TRUE), * mediana = median(edad, na.rm = TRUE), * desvio = sd(edad, na.rm = TRUE), * cv = desvio / media * 100) ``` ] .panel2-group_by_2-auto[ ``` # A tibble: 21 x 8 # Groups: sexo [3] sexo edad_rango min max media mediana desvio cv <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 Femenino 0 a 18 1 18 11.2 13 5.60 49.9 2 Femenino 19 a 29 19 29 24.6 25 3.07 12.5 3 Femenino 30 a 39 30 39 34.3 34 2.87 8.36 4 Femenino 40 a 49 40 49 44.3 44 2.85 6.43 5 Femenino 50 a 59 50 59 54.2 54 2.88 5.32 6 Femenino 60 o más 60 120 71.7 69 9.70 13.5 7 Femenino <NA> -12 -8 -10 -10 2.83 -28.3 8 Masculino 0 a 18 0 18 10.4 11 5.70 54.7 9 Masculino 19 a 29 19 29 24.6 25 3.08 12.5 10 Masculino 30 a 39 30 39 34.4 34 2.85 8.29 # ... with 11 more rows ``` ] <style> .panel1-group_by_2-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-group_by_2-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-group_by_2-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: middle, center, inverse <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/logo tidyr.png" width="50%" style="display: block; margin: auto;" /> --- # Funciones del paquete tidyr: <br> | __Función__ | __Acción__ | | :--- | ---: | | `pivot_longer()` | *Transforma en filas varias columnas*| | `pivot_wider()` | *transforma en columnas varias filas*| --- # estructura de datos .pull-left[ <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/dato_ancho.png" width="80%" style="display: block; margin: auto;" /> ] .pull-right[ <img src="data:image/png;base64,#C:/Users/pablo/Documents/Pablo/Cursos R/R+UNSAM/M1_Diplo_CSS/Clase 3 - Tidyverse/img/dato_largo.png" width="80%" style="display: block; margin: auto;" /> ] --- class: inverse, middle, center # _pivot_longer()_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Reestructura la base, apilando varias columnas en una. De ancho a largo</p>_ --- count: false # _pivot_longer()_ .panel1-pivot_longer_1-auto[ ```r *base_covid ``` ] .panel2-pivot_longer_1-auto[ ``` # A tibble: 182,680 x 25 id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # _pivot_longer()_ .panel1-pivot_longer_1-auto[ ```r base_covid %>% * group_by(residencia_provincia_nombre) ``` ] .panel2-pivot_longer_1-auto[ ``` # A tibble: 182,680 x 25 # Groups: residencia_provincia_nombre [25] id_evento_caso sexo edad edad_años_meses residencia_pais_~ residencia_prov~ <dbl> <chr> <dbl> <chr> <chr> <chr> 1 748361 NR 23 Años Líbano SIN ESPECIFICAR 2 748780 F 53 Años Argentina CABA 3 751658 M 44 Años Argentina CABA 4 755897 F 29 Años Argentina CABA 5 756503 M 54 Años Argentina CABA 6 758578 M 2 Años Argentina CABA 7 762704 M 41 Años Argentina CABA 8 763097 M 53 Años Argentina CABA 9 764087 F 70 Años Argentina CABA 10 765127 M 30 Años Argentina CABA # ... with 182,670 more rows, and 19 more variables: # residencia_departamento_nombre <chr>, carga_provincia_nombre <chr>, # fecha_inicio_sintomas <date>, fecha_apertura <date>, sepi_apertura <dbl>, # fecha_internacion <date>, cuidado_intensivo <chr>, # fecha_cui_intensivo <lgl>, fallecido <chr>, fecha_fallecimiento <date>, # asistencia_respiratoria_mecanica <chr>, carga_provincia_id <chr>, # origen_financiamiento <chr>, clasificacion <chr>, # clasificacion_resumen <chr>, residencia_provincia_id <chr>, # fecha_diagnostico <date>, residencia_departamento_id <chr>, # ultima_actualizacion <date> ``` ] --- count: false # _pivot_longer()_ .panel1-pivot_longer_1-auto[ ```r base_covid %>% group_by(residencia_provincia_nombre) %>% * summarise(min = min(edad, na.rm = TRUE), * max = max(edad, na.rm = TRUE), * media = mean(edad, na.rm = TRUE), * mediana = median(edad, na.rm = TRUE), * desvio = sd(edad, na.rm = TRUE), * cv = desvio / media * 100) ``` ] .panel2-pivot_longer_1-auto[ ``` # A tibble: 25 x 7 residencia_provincia_nombre min max media mediana desvio cv <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 Buenos Aires 0 121 38.6 37 18.2 47.2 2 CABA -12 121 40.3 38 18.8 46.5 3 Catamarca 1 94 37.3 36 17.4 46.7 4 Chaco 1 97 37.7 35 17.3 46.0 5 Chubut 1 97 38.8 36 16.2 41.7 6 Córdoba 1 121 39.0 37 18.8 48.1 7 Corrientes 1 95 37.7 35 15.4 40.8 8 Entre Ríos 1 101 39.0 37 18.5 47.3 9 Formosa 1 89 37.2 36 17.1 46.0 10 Jujuy 1 121 40.7 39 18.1 44.4 # ... with 15 more rows ``` ] --- count: false # _pivot_longer()_ .panel1-pivot_longer_1-auto[ ```r base_covid %>% group_by(residencia_provincia_nombre) %>% summarise(min = min(edad, na.rm = TRUE), max = max(edad, na.rm = TRUE), media = mean(edad, na.rm = TRUE), mediana = median(edad, na.rm = TRUE), desvio = sd(edad, na.rm = TRUE), cv = desvio / media * 100) %>% * select(residencia_provincia_nombre, * media, mediana, desvio) ``` ] .panel2-pivot_longer_1-auto[ ``` # A tibble: 25 x 4 residencia_provincia_nombre media mediana desvio <chr> <dbl> <dbl> <dbl> 1 Buenos Aires 38.6 37 18.2 2 CABA 40.3 38 18.8 3 Catamarca 37.3 36 17.4 4 Chaco 37.7 35 17.3 5 Chubut 38.8 36 16.2 6 Córdoba 39.0 37 18.8 7 Corrientes 37.7 35 15.4 8 Entre Ríos 39.0 37 18.5 9 Formosa 37.2 36 17.1 10 Jujuy 40.7 39 18.1 # ... with 15 more rows ``` ] --- count: false # _pivot_longer()_ .panel1-pivot_longer_1-auto[ ```r base_covid %>% group_by(residencia_provincia_nombre) %>% summarise(min = min(edad, na.rm = TRUE), max = max(edad, na.rm = TRUE), media = mean(edad, na.rm = TRUE), mediana = median(edad, na.rm = TRUE), desvio = sd(edad, na.rm = TRUE), cv = desvio / media * 100) %>% select(residencia_provincia_nombre, media, mediana, desvio) %>% * pivot_longer(cols = c(media, mediana, desvio), #<< * names_to = "variable", * values_to = "valor") ``` ] .panel2-pivot_longer_1-auto[ ``` # A tibble: 75 x 3 residencia_provincia_nombre variable valor <chr> <chr> <dbl> 1 Buenos Aires media 38.6 2 Buenos Aires mediana 37 3 Buenos Aires desvio 18.2 4 CABA media 40.3 5 CABA mediana 38 6 CABA desvio 18.8 7 Catamarca media 37.3 8 Catamarca mediana 36 9 Catamarca desvio 17.4 10 Chaco media 37.7 # ... with 65 more rows ``` ] <style> .panel1-pivot_longer_1-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-pivot_longer_1-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-pivot_longer_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center # _pivot_wider()_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Reestructura la base, encolumnando varias filas de una variable. De largo a ancho</p>_ --- count: false # _pivot_wider()_ .panel1-pivot_wider_1-auto[ ```r *base_largo ``` ] .panel2-pivot_wider_1-auto[ ``` # A tibble: 75 x 3 residencia_provincia_nombre variable valor <chr> <chr> <dbl> 1 Buenos Aires media 38.6 2 Buenos Aires mediana 37 3 Buenos Aires desvio 18.2 4 CABA media 40.3 5 CABA mediana 38 6 CABA desvio 18.8 7 Catamarca media 37.3 8 Catamarca mediana 36 9 Catamarca desvio 17.4 10 Chaco media 37.7 # ... with 65 more rows ``` ] --- count: false # _pivot_wider()_ .panel1-pivot_wider_1-auto[ ```r base_largo %>% * pivot_wider(names_from = "variable", #<< * values_from = "valor") ``` ] .panel2-pivot_wider_1-auto[ ``` # A tibble: 25 x 4 residencia_provincia_nombre media mediana desvio <chr> <dbl> <dbl> <dbl> 1 Buenos Aires 38.6 37 18.2 2 CABA 40.3 38 18.8 3 Catamarca 37.3 36 17.4 4 Chaco 37.7 35 17.3 5 Chubut 38.8 36 16.2 6 Córdoba 39.0 37 18.8 7 Corrientes 37.7 35 15.4 8 Entre Ríos 39.0 37 18.5 9 Formosa 37.2 36 17.1 10 Jujuy 40.7 39 18.1 # ... with 15 more rows ``` ] <style> .panel1-pivot_wider_1-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-pivot_wider_1-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-pivot_wider_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style>